<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Assimp: Assimp::Importer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Assimp
   &#160;<span id="projectnumber">v3.0 (July 2012)</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespace_assimp.html">Assimp</a></li><li class="navelem"><a class="el" href="class_assimp_1_1_importer.html">Importer</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="class_assimp_1_1_importer.html#pub-methods">Public Member Functions</a> &#124;
<a href="class_assimp_1_1_importer.html#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">Assimp::Importer Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>CPP-API: The <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> class forms an C++ interface to the functionality of the Open Asset Import Library.  
 <a href="class_assimp_1_1_importer.html#details">More...</a></p>

<p><a href="class_assimp_1_1_importer-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5872e749c1451fee64183fc14f1fc81d"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structai_scene.html">aiScene</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a5872e749c1451fee64183fc14f1fc81d">ApplyPostProcessing</a> (unsigned int pFlags)</td></tr>
<tr class="memdesc:a5872e749c1451fee64183fc14f1fc81d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Apply post-processing to an already-imported scene.  <a href="class_assimp_1_1_importer.html#a5872e749c1451fee64183fc14f1fc81d"></a><br/></td></tr>
<tr class="memitem:a53dafc3046abc33365a07c605716c5d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a53dafc3046abc33365a07c605716c5d4">FreeScene</a> ()</td></tr>
<tr class="memdesc:a53dafc3046abc33365a07c605716c5d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees the current scene.  <a href="class_assimp_1_1_importer.html#a53dafc3046abc33365a07c605716c5d4"></a><br/></td></tr>
<tr class="memitem:a23bab5ba8cb9b6886c690a610766668b"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a23bab5ba8cb9b6886c690a610766668b">GetErrorString</a> () const </td></tr>
<tr class="memdesc:a23bab5ba8cb9b6886c690a610766668b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an error description of an error that occurred in <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>.  <a href="class_assimp_1_1_importer.html#a23bab5ba8cb9b6886c690a610766668b"></a><br/></td></tr>
<tr class="memitem:a23c85647f7977012d9fef20b36c2d579"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a23c85647f7977012d9fef20b36c2d579">GetExtensionList</a> (<a class="el" href="structai_string.html">aiString</a> &amp;szOut) const </td></tr>
<tr class="memdesc:a23c85647f7977012d9fef20b36c2d579"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a full list of all file extensions supported by ASSIMP.  <a href="class_assimp_1_1_importer.html#a23c85647f7977012d9fef20b36c2d579"></a><br/></td></tr>
<tr class="memitem:a6ab684351c55e170de3c5b7d730b306d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a6ab684351c55e170de3c5b7d730b306d">GetExtensionList</a> (std::string &amp;szOut) const </td></tr>
<tr class="memdesc:a6ab684351c55e170de3c5b7d730b306d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a full list of all file extensions supported by ASSIMP.  <a href="class_assimp_1_1_importer.html#a6ab684351c55e170de3c5b7d730b306d"></a><br/></td></tr>
<tr class="memitem:a712a0545a11c9d198392867552ba6646"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a712a0545a11c9d198392867552ba6646">GetImporter</a> (size_t index) const </td></tr>
<tr class="memdesc:a712a0545a11c9d198392867552ba6646"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the importer corresponding to a specific index.  <a href="class_assimp_1_1_importer.html#a712a0545a11c9d198392867552ba6646"></a><br/></td></tr>
<tr class="memitem:a18921ab411273fa95961f60848ad6007"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a18921ab411273fa95961f60848ad6007">GetImporter</a> (const char *szExtension) const </td></tr>
<tr class="memdesc:a18921ab411273fa95961f60848ad6007"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the importer corresponding to a specific file extension.  <a href="class_assimp_1_1_importer.html#a18921ab411273fa95961f60848ad6007"></a><br/></td></tr>
<tr class="memitem:afe982451f1a1c9b0b59c788f9329ccc1"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#afe982451f1a1c9b0b59c788f9329ccc1">GetImporterCount</a> () const </td></tr>
<tr class="memdesc:afe982451f1a1c9b0b59c788f9329ccc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the number of importrs currently registered with <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a>.  <a href="class_assimp_1_1_importer.html#afe982451f1a1c9b0b59c788f9329ccc1"></a><br/></td></tr>
<tr class="memitem:aee103460f66b9cbe3143400ec92ffc56"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#aee103460f66b9cbe3143400ec92ffc56">GetImporterIndex</a> (const char *szExtension) const </td></tr>
<tr class="memdesc:aee103460f66b9cbe3143400ec92ffc56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the importer index corresponding to a specific file extension.  <a href="class_assimp_1_1_importer.html#aee103460f66b9cbe3143400ec92ffc56"></a><br/></td></tr>
<tr class="memitem:a857dd22e071521c7747dc909f6a8f6f9"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structai_importer_desc.html">aiImporterDesc</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a857dd22e071521c7747dc909f6a8f6f9">GetImporterInfo</a> (size_t index) const </td></tr>
<tr class="memdesc:a857dd22e071521c7747dc909f6a8f6f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get meta data for the importer corresponding to a specific index.  <a href="class_assimp_1_1_importer.html#a857dd22e071521c7747dc909f6a8f6f9"></a><br/></td></tr>
<tr class="memitem:abe3af30f4c5eae2e875b0f32068be44d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_assimp_1_1_i_o_system.html">IOSystem</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#abe3af30f4c5eae2e875b0f32068be44d">GetIOHandler</a> () const </td></tr>
<tr class="memdesc:abe3af30f4c5eae2e875b0f32068be44d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the IO handler that is currently set.  <a href="class_assimp_1_1_importer.html#abe3af30f4c5eae2e875b0f32068be44d"></a><br/></td></tr>
<tr class="memitem:aba2eacd0b627cb481b6d66d9ca55eac9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#aba2eacd0b627cb481b6d66d9ca55eac9">GetMemoryRequirements</a> (aiMemoryInfo &amp;in) const </td></tr>
<tr class="memdesc:aba2eacd0b627cb481b6d66d9ca55eac9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the storage allocated by ASSIMP to hold the scene data in memory.  <a href="class_assimp_1_1_importer.html#aba2eacd0b627cb481b6d66d9ca55eac9"></a><br/></td></tr>
<tr class="memitem:a60eb9042fb85bfbd61a863e131a56ecd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structai_scene.html">aiScene</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a60eb9042fb85bfbd61a863e131a56ecd">GetOrphanedScene</a> ()</td></tr>
<tr class="memdesc:a60eb9042fb85bfbd61a863e131a56ecd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the scene loaded by the last successful call to <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> and releases the scene from the ownership of the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance.  <a href="class_assimp_1_1_importer.html#a60eb9042fb85bfbd61a863e131a56ecd"></a><br/></td></tr>
<tr class="memitem:a1fa669f0edc504fdf9178e8e22c728ad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_assimp_1_1_progress_handler.html">ProgressHandler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a1fa669f0edc504fdf9178e8e22c728ad">GetProgressHandler</a> () const </td></tr>
<tr class="memdesc:a1fa669f0edc504fdf9178e8e22c728ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the progress handler that is currently set.  <a href="class_assimp_1_1_importer.html#a1fa669f0edc504fdf9178e8e22c728ad"></a><br/></td></tr>
<tr class="memitem:a90f5d35d25e5d2a0ef8bc0c6545b2010"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a90f5d35d25e5d2a0ef8bc0c6545b2010">GetPropertyBool</a> (const char *szName, bool bErrorReturn=false) const </td></tr>
<tr class="memdesc:a90f5d35d25e5d2a0ef8bc0c6545b2010"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a boolean configuration property.  <a href="class_assimp_1_1_importer.html#a90f5d35d25e5d2a0ef8bc0c6545b2010"></a><br/></td></tr>
<tr class="memitem:a9a99a3467d6386ddcfbe2823f16b6640"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a9a99a3467d6386ddcfbe2823f16b6640">GetPropertyFloat</a> (const char *szName, float fErrorReturn=10e10f) const </td></tr>
<tr class="memdesc:a9a99a3467d6386ddcfbe2823f16b6640"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a floating-point configuration property.  <a href="class_assimp_1_1_importer.html#a9a99a3467d6386ddcfbe2823f16b6640"></a><br/></td></tr>
<tr class="memitem:a3e796a0758a9f10f13107f44c542ad41"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a3e796a0758a9f10f13107f44c542ad41">GetPropertyInteger</a> (const char *szName, int iErrorReturn=0xffffffff) const </td></tr>
<tr class="memdesc:a3e796a0758a9f10f13107f44c542ad41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a configuration property.  <a href="class_assimp_1_1_importer.html#a3e796a0758a9f10f13107f44c542ad41"></a><br/></td></tr>
<tr class="memitem:a4d64ee7131d6c26dc9688de85d142f14"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a4d64ee7131d6c26dc9688de85d142f14">GetPropertyString</a> (const char *szName, const std::string &amp;sErrorReturn=&quot;&quot;) const </td></tr>
<tr class="memdesc:a4d64ee7131d6c26dc9688de85d142f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a string configuration property.  <a href="class_assimp_1_1_importer.html#a4d64ee7131d6c26dc9688de85d142f14"></a><br/></td></tr>
<tr class="memitem:a26fd479a6a955969c1377fa59f92db66"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structai_scene.html">aiScene</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a26fd479a6a955969c1377fa59f92db66">GetScene</a> () const </td></tr>
<tr class="memdesc:a26fd479a6a955969c1377fa59f92db66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the scene loaded by the last successful call to <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>  <a href="class_assimp_1_1_importer.html#a26fd479a6a955969c1377fa59f92db66"></a><br/></td></tr>
<tr class="memitem:a2c207299ed05f1db1ad1e6dab005f719"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a2c207299ed05f1db1ad1e6dab005f719">Importer</a> ()</td></tr>
<tr class="memdesc:a2c207299ed05f1db1ad1e6dab005f719"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="class_assimp_1_1_importer.html#a2c207299ed05f1db1ad1e6dab005f719"></a><br/></td></tr>
<tr class="memitem:a69743664b5a7a8c195be48265144317b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a69743664b5a7a8c195be48265144317b">Importer</a> (const <a class="el" href="class_assimp_1_1_importer.html">Importer</a> &amp;other)</td></tr>
<tr class="memdesc:a69743664b5a7a8c195be48265144317b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor.  <a href="class_assimp_1_1_importer.html#a69743664b5a7a8c195be48265144317b"></a><br/></td></tr>
<tr class="memitem:ae3f26466cf7756594216ffedbc247563"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#ae3f26466cf7756594216ffedbc247563">IsDefaultIOHandler</a> () const </td></tr>
<tr class="memdesc:ae3f26466cf7756594216ffedbc247563"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether a default IO handler is active A default handler is active as long the application doesn't supply its own custom IO handler via <a class="el" href="class_assimp_1_1_importer.html#a1161f46318af18bb86dfe0fc3edea4df" title="Supplies a custom IO handler to the importer to use to open and access files.">SetIOHandler()</a>.  <a href="class_assimp_1_1_importer.html#ae3f26466cf7756594216ffedbc247563"></a><br/></td></tr>
<tr class="memitem:a2d60d970eddf8f9d35b6e9b54214cedd"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a2d60d970eddf8f9d35b6e9b54214cedd">IsDefaultProgressHandler</a> () const </td></tr>
<tr class="memdesc:a2d60d970eddf8f9d35b6e9b54214cedd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks whether a default progress handler is active A default handler is active as long the application doesn't supply its own custom progress handler via <a class="el" href="class_assimp_1_1_importer.html#a6a4d830ffb3f77a3c7c919e0af006920" title="Supplies a custom progress handler to the importer.">SetProgressHandler()</a>.  <a href="class_assimp_1_1_importer.html#a2d60d970eddf8f9d35b6e9b54214cedd"></a><br/></td></tr>
<tr class="memitem:a9146ea75c33c0aac0310195346877388"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a9146ea75c33c0aac0310195346877388">IsExtensionSupported</a> (const char *szExtension) const </td></tr>
<tr class="memdesc:a9146ea75c33c0aac0310195346877388"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether a given file extension is supported by ASSIMP.  <a href="class_assimp_1_1_importer.html#a9146ea75c33c0aac0310195346877388"></a><br/></td></tr>
<tr class="memitem:a5b01905366f5bf8d1f89d51f755bf7d2"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a5b01905366f5bf8d1f89d51f755bf7d2">IsExtensionSupported</a> (const std::string &amp;szExtension) const </td></tr>
<tr class="memdesc:a5b01905366f5bf8d1f89d51f755bf7d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether a given file extension is supported by ASSIMP.  <a href="class_assimp_1_1_importer.html#a5b01905366f5bf8d1f89d51f755bf7d2"></a><br/></td></tr>
<tr class="memitem:ac112839f323a630f83395acb74746827"><td class="memItemLeft" align="right" valign="top">ImporterPimpl *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#ac112839f323a630f83395acb74746827">Pimpl</a> ()</td></tr>
<tr class="memdesc:ac112839f323a630f83395acb74746827"><td class="mdescLeft">&#160;</td><td class="mdescRight">Private, do not use.  <a href="class_assimp_1_1_importer.html#ac112839f323a630f83395acb74746827"></a><br/></td></tr>
<tr class="memitem:a6bf9560ac8b1353ae809ff1d99c9c661"><td class="memItemLeft" align="right" valign="top">const ImporterPimpl *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a6bf9560ac8b1353ae809ff1d99c9c661">Pimpl</a> () const </td></tr>
<tr class="memitem:a174418ab41d5b8bc51a044895cb991e5"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structai_scene.html">aiScene</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5">ReadFile</a> (const char *pFile, unsigned int pFlags)</td></tr>
<tr class="memdesc:a174418ab41d5b8bc51a044895cb991e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the given file and returns its contents if successful.  <a href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5"></a><br/></td></tr>
<tr class="memitem:a339882c7acb47d5b5110bbd078d870a9"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structai_scene.html">aiScene</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a339882c7acb47d5b5110bbd078d870a9">ReadFile</a> (const std::string &amp;pFile, unsigned int pFlags)</td></tr>
<tr class="memdesc:a339882c7acb47d5b5110bbd078d870a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the given file and returns its contents if successful.  <a href="class_assimp_1_1_importer.html#a339882c7acb47d5b5110bbd078d870a9"></a><br/></td></tr>
<tr class="memitem:a9b3c5e8b1042702f449e84a95b3324f6"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structai_scene.html">aiScene</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a9b3c5e8b1042702f449e84a95b3324f6">ReadFileFromMemory</a> (const void *pBuffer, size_t pLength, unsigned int pFlags, const char *pHint=&quot;&quot;)</td></tr>
<tr class="memdesc:a9b3c5e8b1042702f449e84a95b3324f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads the given file from a memory buffer and returns its contents if successful.  <a href="class_assimp_1_1_importer.html#a9b3c5e8b1042702f449e84a95b3324f6"></a><br/></td></tr>
<tr class="memitem:a3846294ffe76d91a1d3096d22d7c6b7d"><td class="memItemLeft" align="right" valign="top">aiReturn&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a3846294ffe76d91a1d3096d22d7c6b7d">RegisterLoader</a> (<a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a> *pImp)</td></tr>
<tr class="memdesc:a3846294ffe76d91a1d3096d22d7c6b7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a new loader.  <a href="class_assimp_1_1_importer.html#a3846294ffe76d91a1d3096d22d7c6b7d"></a><br/></td></tr>
<tr class="memitem:a102650d3648c0e414a1e73bdad9bed35"><td class="memItemLeft" align="right" valign="top">aiReturn&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a102650d3648c0e414a1e73bdad9bed35">RegisterPPStep</a> (BaseProcess *pImp)</td></tr>
<tr class="memdesc:a102650d3648c0e414a1e73bdad9bed35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers a new post-process step.  <a href="class_assimp_1_1_importer.html#a102650d3648c0e414a1e73bdad9bed35"></a><br/></td></tr>
<tr class="memitem:a9bb793072c84c784279d0f6e870bb42d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a9bb793072c84c784279d0f6e870bb42d">SetExtraVerbose</a> (bool bDo)</td></tr>
<tr class="memdesc:a9bb793072c84c784279d0f6e870bb42d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enables "extra verbose" mode.  <a href="class_assimp_1_1_importer.html#a9bb793072c84c784279d0f6e870bb42d"></a><br/></td></tr>
<tr class="memitem:a1161f46318af18bb86dfe0fc3edea4df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a1161f46318af18bb86dfe0fc3edea4df">SetIOHandler</a> (<a class="el" href="class_assimp_1_1_i_o_system.html">IOSystem</a> *pIOHandler)</td></tr>
<tr class="memdesc:a1161f46318af18bb86dfe0fc3edea4df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Supplies a custom IO handler to the importer to use to open and access files.  <a href="class_assimp_1_1_importer.html#a1161f46318af18bb86dfe0fc3edea4df"></a><br/></td></tr>
<tr class="memitem:a6a4d830ffb3f77a3c7c919e0af006920"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a6a4d830ffb3f77a3c7c919e0af006920">SetProgressHandler</a> (<a class="el" href="class_assimp_1_1_progress_handler.html">ProgressHandler</a> *pHandler)</td></tr>
<tr class="memdesc:a6a4d830ffb3f77a3c7c919e0af006920"><td class="mdescLeft">&#160;</td><td class="mdescRight">Supplies a custom progress handler to the importer.  <a href="class_assimp_1_1_importer.html#a6a4d830ffb3f77a3c7c919e0af006920"></a><br/></td></tr>
<tr class="memitem:acf161a9fdd0d2ed3902e325351311389"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#acf161a9fdd0d2ed3902e325351311389">SetPropertyBool</a> (const char *szName, bool value, bool *bWasExisting=NULL)</td></tr>
<tr class="memdesc:acf161a9fdd0d2ed3902e325351311389"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a boolean configuration property.  <a href="class_assimp_1_1_importer.html#acf161a9fdd0d2ed3902e325351311389"></a><br/></td></tr>
<tr class="memitem:ab264807393b68662d1672c2b05e1c0cd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#ab264807393b68662d1672c2b05e1c0cd">SetPropertyFloat</a> (const char *szName, float fValue, bool *bWasExisting=NULL)</td></tr>
<tr class="memdesc:ab264807393b68662d1672c2b05e1c0cd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a floating-point configuration property.  <a href="class_assimp_1_1_importer.html#ab264807393b68662d1672c2b05e1c0cd"></a><br/></td></tr>
<tr class="memitem:aa50eba6120a9b9805d0c2b02f1187165"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#aa50eba6120a9b9805d0c2b02f1187165">SetPropertyInteger</a> (const char *szName, int iValue, bool *bWasExisting=NULL)</td></tr>
<tr class="memdesc:aa50eba6120a9b9805d0c2b02f1187165"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an integer configuration property.  <a href="class_assimp_1_1_importer.html#aa50eba6120a9b9805d0c2b02f1187165"></a><br/></td></tr>
<tr class="memitem:a8f79ecb5c6f67a76fc87654c32986e8e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a8f79ecb5c6f67a76fc87654c32986e8e">SetPropertyString</a> (const char *szName, const std::string &amp;sValue, bool *bWasExisting=NULL)</td></tr>
<tr class="memdesc:a8f79ecb5c6f67a76fc87654c32986e8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a string configuration property.  <a href="class_assimp_1_1_importer.html#a8f79ecb5c6f67a76fc87654c32986e8e"></a><br/></td></tr>
<tr class="memitem:a3b1f5af2c763b13aca0f324b19001722"><td class="memItemLeft" align="right" valign="top">aiReturn&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a3b1f5af2c763b13aca0f324b19001722">UnregisterLoader</a> (<a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a> *pImp)</td></tr>
<tr class="memdesc:a3b1f5af2c763b13aca0f324b19001722"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregisters a loader.  <a href="class_assimp_1_1_importer.html#a3b1f5af2c763b13aca0f324b19001722"></a><br/></td></tr>
<tr class="memitem:a3a683671c7c40638b1103c5d3648d86c"><td class="memItemLeft" align="right" valign="top">aiReturn&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a3a683671c7c40638b1103c5d3648d86c">UnregisterPPStep</a> (BaseProcess *pImp)</td></tr>
<tr class="memdesc:a3a683671c7c40638b1103c5d3648d86c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregisters a post-process step.  <a href="class_assimp_1_1_importer.html#a3a683671c7c40638b1103c5d3648d86c"></a><br/></td></tr>
<tr class="memitem:a780329e2dd0406e930291cf8ab9deb99"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a780329e2dd0406e930291cf8ab9deb99">ValidateFlags</a> (unsigned int pFlags) const </td></tr>
<tr class="memdesc:a780329e2dd0406e930291cf8ab9deb99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether a given set of postprocessing flags is supported.  <a href="class_assimp_1_1_importer.html#a780329e2dd0406e930291cf8ab9deb99"></a><br/></td></tr>
<tr class="memitem:a3d65af5286ba22f46220a72a6eb2a1c9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a3d65af5286ba22f46220a72a6eb2a1c9">~Importer</a> ()</td></tr>
<tr class="memdesc:a3d65af5286ba22f46220a72a6eb2a1c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="class_assimp_1_1_importer.html#a3d65af5286ba22f46220a72a6eb2a1c9"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a3928bb8d375fd676dd5dbe33382e46ce"><td class="memItemLeft" align="right" valign="top">ImporterPimpl *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_assimp_1_1_importer.html#a3928bb8d375fd676dd5dbe33382e46ce">pimpl</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>CPP-API: The <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> class forms an C++ interface to the functionality of the Open Asset Import Library. </p>
<p>Create an object of this class and call <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> to import a file. If the import succeeds, the function returns a pointer to the imported data. The data remains property of the object, it is intended to be accessed read-only. The imported data will be destroyed along with the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> object. If the import fails, <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> returns a NULL pointer. In this case you can retrieve a human-readable error description be calling <a class="el" href="class_assimp_1_1_importer.html#a23bab5ba8cb9b6886c690a610766668b" title="Returns an error description of an error that occurred in ReadFile().">GetErrorString()</a>. You can call <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> multiple times with a single <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. Actually, constructing <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> objects involves quite many allocations and may take some time, so it's better to reuse them as often as possible.</p>
<p>If you need the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> to do custom file handling to access the files, implement <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a> and <a class="el" href="class_assimp_1_1_i_o_stream.html" title="CPP-API: Class to handle file I/O for C++.">IOStream</a> and supply an instance of your custom <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a> implementation by calling <a class="el" href="class_assimp_1_1_importer.html#a1161f46318af18bb86dfe0fc3edea4df" title="Supplies a custom IO handler to the importer to use to open and access files.">SetIOHandler()</a> before calling <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>. If you do not assign a custion IO handler, a default handler using the standard C++ IO logic will be used.</p>
<dl class="section note"><dt>Note:</dt><dd>One <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance is not thread-safe. If you use multiple threads for loading, each thread should maintain its own <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a2c207299ed05f1db1ad1e6dab005f719"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Assimp::Importer::Importer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Constructor. </p>
<p>Creates an empty importer object. </p>
<pre class="fragment">      Call ReadFile() to start the import process. The configuration
      property table is initially empty.</pre> 
</div>
</div>
<a class="anchor" id="a69743664b5a7a8c195be48265144317b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Assimp::Importer::Importer </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_assimp_1_1_importer.html">Importer</a> &amp;&#160;</td>
          <td class="paramname"><em>other</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copy constructor. </p>
<p>This copies the configuration properties of another <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a>. If this <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> owns a scene it won't be copied. Call <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> to start the import process. </p>

</div>
</div>
<a class="anchor" id="a3d65af5286ba22f46220a72a6eb2a1c9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Assimp::Importer::~Importer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Destructor. </p>
<p>The object kept ownership of the imported data, which now will be destroyed along with the object. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a5872e749c1451fee64183fc14f1fc81d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structai_scene.html">aiScene</a>* Assimp::Importer::ApplyPostProcessing </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pFlags</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Apply post-processing to an already-imported scene. </p>
<p>This is strictly equivalent to calling <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> with the same flags. However, you can use this separate function to inspect the imported scene first to fine-tune your post-processing setup. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pFlags</td><td>Provide a bitwise combination of the <a class="el" href="postprocess_8h.html#a64795260b95f5a4b3f3dc1be4f52e410" title="Defines the flags for all possible post processing steps.">aiPostProcessSteps</a> flags. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>A pointer to the post-processed data. This is still the same as the pointer returned by <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>. However, if post-processing fails, the scene could now be NULL. That's quite a rare case, post processing steps are not really designed to 'fail'. To be exact, the #aiProcess_ValidateDS flag is currently the only post processing step which can actually cause the scene to be reset to NULL.</dd></dl>
<dl class="section note"><dt>Note:</dt><dd>The method does nothing if no scene is currently bound to the <a class="el" href="class_assimp_1_1_importer.html#a2c207299ed05f1db1ad1e6dab005f719" title="Constructor.">Importer</a> instance. </dd></dl>

</div>
</div>
<a class="anchor" id="a53dafc3046abc33365a07c605716c5d4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::FreeScene </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Frees the current scene. </p>
<p>The function does nothing if no scene has previously been read via <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>. <a class="el" href="class_assimp_1_1_importer.html#a53dafc3046abc33365a07c605716c5d4" title="Frees the current scene.">FreeScene()</a> is called automatically by the destructor and <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> itself. </p>

</div>
</div>
<a class="anchor" id="a23bab5ba8cb9b6886c690a610766668b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* Assimp::Importer::GetErrorString </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns an error description of an error that occurred in <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>. </p>
<p>Returns an empty string if no error occurred. </p>
<dl class="section return"><dt>Returns:</dt><dd>A description of the last error, an empty string if no error occurred. The string is never NULL.</dd></dl>
<dl class="section note"><dt>Note:</dt><dd>The returned function remains valid until one of the following methods is called: <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>, <a class="el" href="class_assimp_1_1_importer.html#a53dafc3046abc33365a07c605716c5d4" title="Frees the current scene.">FreeScene()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="a23c85647f7977012d9fef20b36c2d579"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::GetExtensionList </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structai_string.html">aiString</a> &amp;&#160;</td>
          <td class="paramname"><em>szOut</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get a full list of all file extensions supported by ASSIMP. </p>
<pre class="fragment">If a file extension is contained in the list this does of course not
mean that ASSIMP is able to load all files with this extension &amp;mdash;
</pre><p> it simply means there is an importer loaded which claims to handle files with this file extension. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">szOut</td><td>String to receive the extension list. Format of the list: "*.3ds;*.obj;*.dae". This is useful for use with the WinAPI call GetOpenFileName(Ex). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6ab684351c55e170de3c5b7d730b306d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="defs_8h.html#a61d239a320b58eca56bacc46fc2c79b8">AI_FORCE_INLINE</a> void Assimp::Importer::GetExtensionList </td>
          <td>(</td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>szOut</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get a full list of all file extensions supported by ASSIMP. </p>
<p>This function is provided for backward compatibility. See the <a class="el" href="structai_string.html" title="Represents an UTF-8 string, zero byte terminated.">aiString</a> version for detailed and up-to-date docs. </p>
<dl class="section see"><dt>See also:</dt><dd>GetExtensionList(aiString&amp;) </dd></dl>

</div>
</div>
<a class="anchor" id="a712a0545a11c9d198392867552ba6646"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a>* Assimp::Importer::GetImporter </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find the importer corresponding to a specific index. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">index</td><td>Index to query, must be within [0,<a class="el" href="class_assimp_1_1_importer.html#afe982451f1a1c9b0b59c788f9329ccc1" title="Get the number of importrs currently registered with Assimp.">GetImporterCount()</a>) </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd><a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. NULL if the index does not exist. </dd></dl>

</div>
</div>
<a class="anchor" id="a18921ab411273fa95961f60848ad6007"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a>* Assimp::Importer::GetImporter </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szExtension</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find the importer corresponding to a specific file extension. </p>
<p>This is quite similar to <a class="el" href="class_assimp_1_1_importer.html#a9146ea75c33c0aac0310195346877388" title="Returns whether a given file extension is supported by ASSIMP.">IsExtensionSupported</a> except a <a class="el" href="class_assimp_1_1_base_importer.html" title="FOR IMPORTER PLUGINS ONLY: The BaseImporter defines a common interface for all importer worker classe...">BaseImporter</a> instance is returned. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">szExtension</td><td>Extension to check for. The following formats are recognized (BAH being the file extension): "BAH" (comparison is case-insensitive), ".bah", "*.bah" (wild card and dot characters at the beginning of the extension are skipped). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>NULL if no importer is found </dd></dl>

</div>
</div>
<a class="anchor" id="afe982451f1a1c9b0b59c788f9329ccc1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t Assimp::Importer::GetImporterCount </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the number of importrs currently registered with <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a>. </p>

</div>
</div>
<a class="anchor" id="aee103460f66b9cbe3143400ec92ffc56"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t Assimp::Importer::GetImporterIndex </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szExtension</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find the importer index corresponding to a specific file extension. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">szExtension</td><td>Extension to check for. The following formats are recognized (BAH being the file extension): "BAH" (comparison is case-insensitive), ".bah", "*.bah" (wild card and dot characters at the beginning of the extension are skipped). </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>(size_t)-1 if no importer is found </dd></dl>

</div>
</div>
<a class="anchor" id="a857dd22e071521c7747dc909f6a8f6f9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structai_importer_desc.html">aiImporterDesc</a>* Assimp::Importer::GetImporterInfo </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get meta data for the importer corresponding to a specific index. </p>
<pre class="fragment">       For the declaration of #aiImporterDesc, include &lt;assimp/importerdesc.h&gt;.
       @param index Index to query, must be within [0,GetImporterCount())
       @return Importer meta data structure, NULL if the index does not
          exist or if the importer doesn't offer meta information (
          importers may do this at the cost of being hated by their peers). </pre> 
</div>
</div>
<a class="anchor" id="abe3af30f4c5eae2e875b0f32068be44d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_assimp_1_1_i_o_system.html">IOSystem</a>* Assimp::Importer::GetIOHandler </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves the IO handler that is currently set. </p>
<p>You can use <a class="el" href="class_assimp_1_1_importer.html#ae3f26466cf7756594216ffedbc247563" title="Checks whether a default IO handler is active A default handler is active as long the application doe...">IsDefaultIOHandler()</a> to check whether the returned interface is the default IO handler provided by ASSIMP. The default handler is active as long the application doesn't supply its own custom IO handler via <a class="el" href="class_assimp_1_1_importer.html#a1161f46318af18bb86dfe0fc3edea4df" title="Supplies a custom IO handler to the importer to use to open and access files.">SetIOHandler()</a>. </p>
<dl class="section return"><dt>Returns:</dt><dd>A valid <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a> interface, never NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="aba2eacd0b627cb481b6d66d9ca55eac9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::GetMemoryRequirements </td>
          <td>(</td>
          <td class="paramtype">aiMemoryInfo &amp;&#160;</td>
          <td class="paramname"><em>in</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the storage allocated by ASSIMP to hold the scene data in memory. </p>
<p>This refers to the currently loaded file, see <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">in</td><td>Data structure to be filled. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note:</dt><dd>The returned memory statistics refer to the actual size of the use data of the <a class="el" href="structai_scene.html" title="The root structure of the imported data.">aiScene</a>. Heap-related overhead is (naturally) not included. </dd></dl>

</div>
</div>
<a class="anchor" id="a60eb9042fb85bfbd61a863e131a56ecd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structai_scene.html">aiScene</a>* Assimp::Importer::GetOrphanedScene </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the scene loaded by the last successful call to <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> and releases the scene from the ownership of the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. </p>
<p>The application is now responsible for deleting the scene. Any further calls to <a class="el" href="class_assimp_1_1_importer.html#a26fd479a6a955969c1377fa59f92db66" title="Returns the scene loaded by the last successful call to ReadFile()">GetScene()</a> or <a class="el" href="class_assimp_1_1_importer.html#a60eb9042fb85bfbd61a863e131a56ecd" title="Returns the scene loaded by the last successful call to ReadFile() and releases the scene from the ow...">GetOrphanedScene()</a> will return NULL - until a new scene has been loaded via <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a>.</p>
<dl class="section return"><dt>Returns:</dt><dd>Current scene or NULL if there is currently no scene loaded </dd></dl>
<dl class="section note"><dt>Note:</dt><dd>Use this method with maximal caution, and only if you have to. By design, <a class="el" href="structai_scene.html" title="The root structure of the imported data.">aiScene</a>'s are exclusively maintained, allocated and deallocated by <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a> and no one else. The reasoning behind this is the golden rule that deallocations should always be done by the module that did the original allocation because heaps are not necessarily shared. <a class="el" href="class_assimp_1_1_importer.html#a60eb9042fb85bfbd61a863e131a56ecd" title="Returns the scene loaded by the last successful call to ReadFile() and releases the scene from the ow...">GetOrphanedScene()</a> enforces you to delete the returned scene by yourself, but this will only be fine if and only if you're using the same heap as assimp. On Windows, it's typically fine provided everything is linked against the multithreaded-dll version of the runtime library. It will work as well for static linkage with <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="a1fa669f0edc504fdf9178e8e22c728ad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_assimp_1_1_progress_handler.html">ProgressHandler</a>* Assimp::Importer::GetProgressHandler </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieves the progress handler that is currently set. </p>
<p>You can use <a class="el" href="class_assimp_1_1_importer.html#a2d60d970eddf8f9d35b6e9b54214cedd" title="Checks whether a default progress handler is active A default handler is active as long the applicati...">IsDefaultProgressHandler()</a> to check whether the returned interface is the default handler provided by ASSIMP. The default handler is active as long the application doesn't supply its own custom handler via <a class="el" href="class_assimp_1_1_importer.html#a6a4d830ffb3f77a3c7c919e0af006920" title="Supplies a custom progress handler to the importer.">SetProgressHandler()</a>. </p>
<dl class="section return"><dt>Returns:</dt><dd>A valid <a class="el" href="class_assimp_1_1_progress_handler.html" title="CPP-API: Abstract interface for custom progress report receivers.">ProgressHandler</a> interface, never NULL. </dd></dl>

</div>
</div>
<a class="anchor" id="a90f5d35d25e5d2a0ef8bc0c6545b2010"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool Assimp::Importer::GetPropertyBool </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>bErrorReturn</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Get a boolean configuration property. </p>
<p>Boolean properties are stored on the integer stack internally so it's possible to set them via <a class="el" href="class_assimp_1_1_importer.html#acf161a9fdd0d2ed3902e325351311389" title="Set a boolean configuration property.">SetPropertyBool</a> and query them with <a class="el" href="class_assimp_1_1_importer.html#a90f5d35d25e5d2a0ef8bc0c6545b2010" title="Get a boolean configuration property.">GetPropertyBool</a> and vice versa. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="class_assimp_1_1_importer.html#a3e796a0758a9f10f13107f44c542ad41" title="Get a configuration property.">GetPropertyInteger()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a9a99a3467d6386ddcfbe2823f16b6640"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float Assimp::Importer::GetPropertyFloat </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>fErrorReturn</em> = <code>10e10f</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get a floating-point configuration property. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="class_assimp_1_1_importer.html#a3e796a0758a9f10f13107f44c542ad41" title="Get a configuration property.">GetPropertyInteger()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a3e796a0758a9f10f13107f44c542ad41"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int Assimp::Importer::GetPropertyInteger </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>iErrorReturn</em> = <code>0xffffffff</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get a configuration property. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">szName</td><td>Name of the property. All supported properties are defined in the aiConfig.g header (all constants share the prefix AI_CONFIG_XXX). </td></tr>
    <tr><td class="paramname">iErrorReturn</td><td>Value that is returned if the property is not found. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>Current value of the property </dd></dl>
<dl class="section note"><dt>Note:</dt><dd>Property of different types (float, int, string ..) are kept on different lists, so calling <a class="el" href="class_assimp_1_1_importer.html#aa50eba6120a9b9805d0c2b02f1187165" title="Set an integer configuration property.">SetPropertyInteger()</a> for a floating-point property has no effect - the loader will call <a class="el" href="class_assimp_1_1_importer.html#a9a99a3467d6386ddcfbe2823f16b6640" title="Get a floating-point configuration property.">GetPropertyFloat()</a> to read the property, but it won't be there. </dd></dl>

</div>
</div>
<a class="anchor" id="a4d64ee7131d6c26dc9688de85d142f14"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const std::string&amp; Assimp::Importer::GetPropertyString </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>sErrorReturn</em> = <code>&quot;&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get a string configuration property. </p>
<p>The return value remains valid until the property is modified. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="class_assimp_1_1_importer.html#a3e796a0758a9f10f13107f44c542ad41" title="Get a configuration property.">GetPropertyInteger()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a26fd479a6a955969c1377fa59f92db66"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structai_scene.html">aiScene</a>* Assimp::Importer::GetScene </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the scene loaded by the last successful call to <a class="el" href="class_assimp_1_1_importer.html#a174418ab41d5b8bc51a044895cb991e5" title="Reads the given file and returns its contents if successful.">ReadFile()</a> </p>
<dl class="section return"><dt>Returns:</dt><dd>Current scene or NULL if there is currently no scene loaded </dd></dl>

</div>
</div>
<a class="anchor" id="ae3f26466cf7756594216ffedbc247563"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Assimp::Importer::IsDefaultIOHandler </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Checks whether a default IO handler is active A default handler is active as long the application doesn't supply its own custom IO handler via <a class="el" href="class_assimp_1_1_importer.html#a1161f46318af18bb86dfe0fc3edea4df" title="Supplies a custom IO handler to the importer to use to open and access files.">SetIOHandler()</a>. </p>
<dl class="section return"><dt>Returns:</dt><dd>true by default </dd></dl>

</div>
</div>
<a class="anchor" id="a2d60d970eddf8f9d35b6e9b54214cedd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Assimp::Importer::IsDefaultProgressHandler </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Checks whether a default progress handler is active A default handler is active as long the application doesn't supply its own custom progress handler via <a class="el" href="class_assimp_1_1_importer.html#a6a4d830ffb3f77a3c7c919e0af006920" title="Supplies a custom progress handler to the importer.">SetProgressHandler()</a>. </p>
<dl class="section return"><dt>Returns:</dt><dd>true by default </dd></dl>

</div>
</div>
<a class="anchor" id="a9146ea75c33c0aac0310195346877388"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Assimp::Importer::IsExtensionSupported </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szExtension</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns whether a given file extension is supported by ASSIMP. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">szExtension</td><td>Extension to be checked. Must include a trailing dot '.'. Example: ".3ds", ".md3". Cases-insensitive. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>true if the extension is supported, false otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="a5b01905366f5bf8d1f89d51f755bf7d2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="defs_8h.html#a61d239a320b58eca56bacc46fc2c79b8">AI_FORCE_INLINE</a> bool Assimp::Importer::IsExtensionSupported </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>szExtension</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Returns whether a given file extension is supported by ASSIMP. </p>
<p>This function is provided for backward compatibility. See the const char* version for detailed and up-to-date docs. </p>
<dl class="section see"><dt>See also:</dt><dd>IsExtensionSupported(const char*) </dd></dl>

</div>
</div>
<a class="anchor" id="ac112839f323a630f83395acb74746827"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ImporterPimpl* Assimp::Importer::Pimpl </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Private, do not use. </p>

</div>
</div>
<a class="anchor" id="a6bf9560ac8b1353ae809ff1d99c9c661"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const ImporterPimpl* Assimp::Importer::Pimpl </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a174418ab41d5b8bc51a044895cb991e5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structai_scene.html">aiScene</a>* Assimp::Importer::ReadFile </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pFile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pFlags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads the given file and returns its contents if successful. </p>
<p>If the call succeeds, the contents of the file are returned as a pointer to an <a class="el" href="structai_scene.html" title="The root structure of the imported data.">aiScene</a> object. The returned data is intended to be read-only, the importer object keeps ownership of the data and will destroy it upon destruction. If the import fails, NULL is returned. A human-readable error description can be retrieved by calling <a class="el" href="class_assimp_1_1_importer.html#a23bab5ba8cb9b6886c690a610766668b" title="Returns an error description of an error that occurred in ReadFile().">GetErrorString()</a>. The previous scene will be deleted during this call. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pFile</td><td>Path and filename to the file to be imported. </td></tr>
    <tr><td class="paramname">pFlags</td><td>Optional post processing steps to be executed after a successful import. Provide a bitwise combination of the <a class="el" href="postprocess_8h.html#a64795260b95f5a4b3f3dc1be4f52e410" title="Defines the flags for all possible post processing steps.">aiPostProcessSteps</a> flags. If you wish to inspect the imported scene first in order to fine-tune your post-processing setup, consider to use <a class="el" href="class_assimp_1_1_importer.html#a5872e749c1451fee64183fc14f1fc81d" title="Apply post-processing to an already-imported scene.">ApplyPostProcessing()</a>. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>A pointer to the imported data, NULL if the import failed. The pointer to the scene remains in possession of the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. Use <a class="el" href="class_assimp_1_1_importer.html#a60eb9042fb85bfbd61a863e131a56ecd" title="Returns the scene loaded by the last successful call to ReadFile() and releases the scene from the ow...">GetOrphanedScene()</a> to take ownership of it.</dd></dl>
<dl class="section note"><dt>Note:</dt><dd><a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a> is able to determine the file format of a file automatically. </dd></dl>

</div>
</div>
<a class="anchor" id="a339882c7acb47d5b5110bbd078d870a9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="defs_8h.html#a61d239a320b58eca56bacc46fc2c79b8">AI_FORCE_INLINE</a> const <a class="el" href="structai_scene.html">aiScene</a> * Assimp::Importer::ReadFile </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>pFile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pFlags</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads the given file and returns its contents if successful. </p>
<p>class <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a></p>
<p>This function is provided for backward compatibility. See the const char* version for detailled docs. </p>
<dl class="section see"><dt>See also:</dt><dd>ReadFile(const char*, pFlags) </dd></dl>

</div>
</div>
<a class="anchor" id="a9b3c5e8b1042702f449e84a95b3324f6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const <a class="el" href="structai_scene.html">aiScene</a>* Assimp::Importer::ReadFileFromMemory </td>
          <td>(</td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>pBuffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>pLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pFlags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pHint</em> = <code>&quot;&quot;</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads the given file from a memory buffer and returns its contents if successful. </p>
<p>If the call succeeds, the contents of the file are returned as a pointer to an <a class="el" href="structai_scene.html" title="The root structure of the imported data.">aiScene</a> object. The returned data is intended to be read-only, the importer object keeps ownership of the data and will destroy it upon destruction. If the import fails, NULL is returned. A human-readable error description can be retrieved by calling <a class="el" href="class_assimp_1_1_importer.html#a23bab5ba8cb9b6886c690a610766668b" title="Returns an error description of an error that occurred in ReadFile().">GetErrorString()</a>. The previous scene will be deleted during this call. Calling this method doesn't affect the active <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a>. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pBuffer</td><td>Pointer to the file data </td></tr>
    <tr><td class="paramname">pLength</td><td>Length of pBuffer, in bytes </td></tr>
    <tr><td class="paramname">pFlags</td><td>Optional post processing steps to be executed after a successful import. Provide a bitwise combination of the <a class="el" href="postprocess_8h.html#a64795260b95f5a4b3f3dc1be4f52e410" title="Defines the flags for all possible post processing steps.">aiPostProcessSteps</a> flags. If you wish to inspect the imported scene first in order to fine-tune your post-processing setup, consider to use <a class="el" href="class_assimp_1_1_importer.html#a5872e749c1451fee64183fc14f1fc81d" title="Apply post-processing to an already-imported scene.">ApplyPostProcessing()</a>. </td></tr>
    <tr><td class="paramname">pHint</td><td>An additional hint to the library. If this is a non empty string, the library looks for a loader to support the file extension specified by pHint and passes the file to the first matching loader. If this loader is unable to completely the request, the library continues and tries to determine the file format on its own, a task that may or may not be successful. Check the return value, and you'll know ... </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>A pointer to the imported data, NULL if the import failed. The pointer to the scene remains in possession of the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. Use <a class="el" href="class_assimp_1_1_importer.html#a60eb9042fb85bfbd61a863e131a56ecd" title="Returns the scene loaded by the last successful call to ReadFile() and releases the scene from the ow...">GetOrphanedScene()</a> to take ownership of it.</dd></dl>
<dl class="section note"><dt>Note:</dt><dd>This is a straightforward way to decode models from memory buffers, but it doesn't handle model formats spreading their data across multiple files or even directories. Examples include OBJ or MD3, which outsource parts of their material stuff into external scripts. If you need the full functionality, provide a custom <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a> to make <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a> find these files. </dd></dl>

</div>
</div>
<a class="anchor" id="a3846294ffe76d91a1d3096d22d7c6b7d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">aiReturn Assimp::Importer::RegisterLoader </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a> *&#160;</td>
          <td class="paramname"><em>pImp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Registers a new loader. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pImp</td><td><a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> to be added. The <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance takes ownership of the pointer, so it will be automatically deleted with the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>AI_SUCCESS if the loader has been added. The registration fails if there is already a loader for a specific file extension. </dd></dl>

</div>
</div>
<a class="anchor" id="a102650d3648c0e414a1e73bdad9bed35"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">aiReturn Assimp::Importer::RegisterPPStep </td>
          <td>(</td>
          <td class="paramtype">BaseProcess *&#160;</td>
          <td class="paramname"><em>pImp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Registers a new post-process step. </p>
<p>At the moment, there's a small limitation: new post processing steps are added to end of the list, or in other words, executed last, after all built-in steps. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pImp</td><td>Post-process step to be added. The <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance takes ownership of the pointer, so it will be automatically deleted with the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> instance. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>AI_SUCCESS if the step has been added correctly. </dd></dl>

</div>
</div>
<a class="anchor" id="a9bb793072c84c784279d0f6e870bb42d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::SetExtraVerbose </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>bDo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enables "extra verbose" mode. </p>
<p>'Extra verbose' means the data structure is validated after <em>every</em> single post processing step to make sure everyone modifies the data structure in a well-defined manner. This is a debug feature and not intended for use in production environments. </p>

</div>
</div>
<a class="anchor" id="a1161f46318af18bb86dfe0fc3edea4df"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::SetIOHandler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_assimp_1_1_i_o_system.html">IOSystem</a> *&#160;</td>
          <td class="paramname"><em>pIOHandler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Supplies a custom IO handler to the importer to use to open and access files. </p>
<p>If you need the importer to use custion IO logic to access the files, you need to provide a custom implementation of <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a> and IOFile to the importer. Then create an instance of your custion <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a> implementation and supply it by this function.</p>
<p>The <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> takes ownership of the object and will destroy it afterwards. The previously assigned handler will be deleted. Pass NULL to take again ownership of your <a class="el" href="class_assimp_1_1_i_o_system.html" title="CPP-API: Interface to the file system.">IOSystem</a> and reset <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a> to use its default implementation.</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pIOHandler</td><td>The IO handler to be used in all file accesses of the <a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6a4d830ffb3f77a3c7c919e0af006920"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::SetProgressHandler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_assimp_1_1_progress_handler.html">ProgressHandler</a> *&#160;</td>
          <td class="paramname"><em>pHandler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Supplies a custom progress handler to the importer. </p>
<p>This interface exposes a #Update() callback, which is called more or less periodically (please don't sue us if it isn't as periodically as you'd like it to have ...). This can be used to implement progress bars and loading timeouts. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pHandler</td><td>Progress callback interface. Pass NULL to disable progress reporting. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note:</dt><dd>Progress handlers can be used to abort the loading at almost any time. </dd></dl>

</div>
</div>
<a class="anchor" id="acf161a9fdd0d2ed3902e325351311389"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::SetPropertyBool </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>value</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>bWasExisting</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set a boolean configuration property. </p>
<p>Boolean properties are stored on the integer stack internally so it's possible to set them via <a class="el" href="class_assimp_1_1_importer.html#acf161a9fdd0d2ed3902e325351311389" title="Set a boolean configuration property.">SetPropertyBool</a> and query them with <a class="el" href="class_assimp_1_1_importer.html#a90f5d35d25e5d2a0ef8bc0c6545b2010" title="Get a boolean configuration property.">GetPropertyBool</a> and vice versa. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="class_assimp_1_1_importer.html#aa50eba6120a9b9805d0c2b02f1187165" title="Set an integer configuration property.">SetPropertyInteger()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ab264807393b68662d1672c2b05e1c0cd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::SetPropertyFloat </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>fValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>bWasExisting</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set a floating-point configuration property. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="class_assimp_1_1_importer.html#aa50eba6120a9b9805d0c2b02f1187165" title="Set an integer configuration property.">SetPropertyInteger()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="aa50eba6120a9b9805d0c2b02f1187165"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::SetPropertyInteger </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>iValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>bWasExisting</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set an integer configuration property. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">szName</td><td>Name of the property. All supported properties are defined in the aiConfig.g header (all constants share the prefix AI_CONFIG_XXX and are simple strings). </td></tr>
    <tr><td class="paramname">iValue</td><td>New value of the property </td></tr>
    <tr><td class="paramname">bWasExisting</td><td>Optional pointer to receive true if the property was set before. The new value replaces the previous value in this case. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section note"><dt>Note:</dt><dd>Property of different types (float, int, string ..) are kept on different stacks, so calling <a class="el" href="class_assimp_1_1_importer.html#aa50eba6120a9b9805d0c2b02f1187165" title="Set an integer configuration property.">SetPropertyInteger()</a> for a floating-point property has no effect - the loader will call <a class="el" href="class_assimp_1_1_importer.html#a9a99a3467d6386ddcfbe2823f16b6640" title="Get a floating-point configuration property.">GetPropertyFloat()</a> to read the property, but it won't be there. </dd></dl>

</div>
</div>
<a class="anchor" id="a8f79ecb5c6f67a76fc87654c32986e8e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Assimp::Importer::SetPropertyString </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>szName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>sValue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool *&#160;</td>
          <td class="paramname"><em>bWasExisting</em> = <code>NULL</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set a string configuration property. </p>
<dl class="section see"><dt>See also:</dt><dd><a class="el" href="class_assimp_1_1_importer.html#aa50eba6120a9b9805d0c2b02f1187165" title="Set an integer configuration property.">SetPropertyInteger()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a3b1f5af2c763b13aca0f324b19001722"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">aiReturn Assimp::Importer::UnregisterLoader </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_assimp_1_1_base_importer.html">BaseImporter</a> *&#160;</td>
          <td class="paramname"><em>pImp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unregisters a loader. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pImp</td><td><a class="el" href="class_assimp_1_1_importer.html" title="CPP-API: The Importer class forms an C++ interface to the functionality of the Open Asset Import Libr...">Importer</a> to be unregistered. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>AI_SUCCESS if the loader has been removed. The function fails if the loader is currently in use (this could happen if the <a class="el" href="class_assimp_1_1_importer.html#a2c207299ed05f1db1ad1e6dab005f719" title="Constructor.">Importer</a> instance is used by more than one thread) or if it has not yet been registered. </dd></dl>

</div>
</div>
<a class="anchor" id="a3a683671c7c40638b1103c5d3648d86c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">aiReturn Assimp::Importer::UnregisterPPStep </td>
          <td>(</td>
          <td class="paramtype">BaseProcess *&#160;</td>
          <td class="paramname"><em>pImp</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unregisters a post-process step. </p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pImp</td><td>Step to be unregistered. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>AI_SUCCESS if the step has been removed. The function fails if the step is currently in use (this could happen if the <a class="el" href="class_assimp_1_1_importer.html#a2c207299ed05f1db1ad1e6dab005f719" title="Constructor.">Importer</a> instance is used by more than one thread) or if it has not yet been registered. </dd></dl>

</div>
</div>
<a class="anchor" id="a780329e2dd0406e930291cf8ab9deb99"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool Assimp::Importer::ValidateFlags </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>pFlags</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check whether a given set of postprocessing flags is supported. </p>
<p>Some flags are mutually exclusive, others are probably not available because your excluded them from your <a class="el" href="namespace_assimp.html" title="Assimp&#39;s CPP-API and all internal APIs.">Assimp</a> builds. Calling this function is recommended if you're unsure.</p>
<dl class="params"><dt>Parameters:</dt><dd>
  <table class="params">
    <tr><td class="paramname">pFlags</td><td>Bitwise combination of the aiPostProcess flags. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns:</dt><dd>true if this flag combination is fine. </dd></dl>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="a3928bb8d375fd676dd5dbe33382e46ce"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">ImporterPimpl* Assimp::Importer::pimpl</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_importer_8hpp.html">Importer.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jul 10 2012 17:55:53 for Assimp by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.1
</small></address>
</body>
</html>
